1 module hip.util.windows; 2 3 4 version(Windows): 5 import core.stdc.stdarg; 6 7 8 @nogc nothrow extern(Windows) 9 { 10 void* GetModuleHandleA(const(char)* str); 11 void* GetModuleHandleW(const(wchar)* str); 12 void* GetProcAddress(void* mod, const(char)* func); 13 void* LoadLibraryA(const char* fileName); 14 BOOL FreeLibrary(void* lib); 15 uint GetLastError(); 16 17 DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); 18 19 int SetEndOfFile(void* handle); 20 21 alias GetModuleHandle = GetModuleHandleW; 22 alias FormatMessage = FormatMessageW; 23 24 25 26 HLOCAL LocalAlloc(UINT, SIZE_T); 27 HLOCAL LocalDiscard(HLOCAL); 28 HLOCAL LocalFree(HLOCAL); 29 HLOCAL LocalHandle(LPCVOID); 30 } 31 32 enum DWORD 33 FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, 34 FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, 35 FORMAT_MESSAGE_FROM_STRING = 0x0400, 36 FORMAT_MESSAGE_FROM_HMODULE = 0x0800, 37 FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, 38 FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; 39 40 enum DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; 41 42 alias ubyte BYTE; 43 alias ubyte* PBYTE, LPBYTE; 44 alias ushort USHORT, WORD, ATOM; 45 alias ushort* PUSHORT, PWORD, LPWORD; 46 alias uint ULONG, DWORD, UINT, COLORREF; 47 alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT, LPCOLORREF; 48 alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; 49 alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; 50 alias float FLOAT; 51 alias float* PFLOAT; 52 alias const(void)* PCVOID, LPCVOID; 53 54 alias void* PVOID, LPVOID; 55 alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; 56 alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; 57 alias bool* PBOOLEAN; 58 alias ubyte* PUCHAR; 59 alias short* PSHORT; 60 alias int* PLONG; 61 alias uint* PLCID, PACCESS_MASK; 62 alias long* PLONGLONG; 63 alias ulong* PDWORDLONG, PULONGLONG; 64 65 66 67 alias HMODULE = void*; 68 alias HLOCAL = void*; 69 alias SIZE_T = ulong;